package log

import (
	"fmt"
	"golang.org/x/net/trace"
	"golang.org/x/tools/go/pointer"
)

// 定义日志通道,泛型,接收任意类型的参数
var logChain = make(chan any, 5)

func init() {
	//开启协程
	go func() {
		defer fmt.Println("log 协程退出！！！")
		for true {
			msgAsync := <-logChain
			fmt.Println(msgAsync)
		}
	}()
}

// Log 打印日志，接收任意类型数据
func Log[T any](msg T) {
	logChain <- msg
}

func Warn[T pointer.Warning](msg T) {
	Log(msg)
}

// Error 打印异常信息
func Error[T error](msg T) {
	Log(msg)
}

// Trace 打印trace
func Trace[T trace.Trace](msg T) {
	Log(msg)
}
